/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gov.mtc.dgac.licencias.action;

import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.actions.DispatchAction;
import pe.gov.mtc.dgac.licencias.bean.ClienteTO;
import pe.gov.mtc.dgac.licencias.bean.ClienteoperadorTO;
import pe.gov.mtc.dgac.licencias.bean.FuncionTO;
import pe.gov.mtc.dgac.licencias.bean.OperadorAereoTO;
import pe.gov.mtc.dgac.licencias.bean.TipoDocumentoTO;
import pe.gov.mtc.dgac.licencias.bean.UbigeoTO;
import pe.gov.mtc.dgac.licencias.service.ClienteService;
import pe.gov.mtc.dgac.licencias.service.ClienteoperadorService;
import pe.gov.mtc.dgac.licencias.struts.Constants;
import pe.gov.mtc.dgac.licencias.util.Page;

/**
 *
 * @author externo.gamaro
 */
public class ClienteAction extends DispatchAction{
    private final static String SUCCESS = "success";
    private Log logger = LogFactory.getLog(this.getClass());
    private ClienteService cliService;
    private ClienteoperadorService cliopeService;
    
    public ClienteAction(ClienteService cliService,ClienteoperadorService cliopeService) {
        super();
        this.cliService = cliService;
        this.cliopeService=cliopeService;
        
    }
    
    public ActionForward buscarCliente(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse response) throws Exception {
        logger.debug("buscarCliente");
        String codcli = req.getParameter("cliente");
        String numdoc = req.getParameter("txtnumdoc");
        String clinom = req.getParameter("txtnombres");
        String cliapepat = req.getParameter("txtapepat");
        String cliapemat = req.getParameter("txtapemat");
        String page=req.getParameter("page");
        HttpSession sesion = req.getSession();
        boolean nuevabusqueda=false;
     
          if(page.equals(""))page="1"; 
          if(page.equals("0"))nuevabusqueda=true;
              
              int pagina=Integer.parseInt(page);
              if(nuevabusqueda) {
                 ClienteTO cli=new ClienteTO();
                 cli.setCodCliente(0L);
                 if (cliapepat!=null) cli.setApellidoPat(cliapepat);
                 if (cliapemat!=null) cli.setApellidoMat(cliapemat);
                 if (clinom!=null) cli.setNombres(clinom);
                 if (!codcli.equals("")) cli.setCodCliente(Long.parseLong(codcli));
                 if (numdoc!=null) cli.setNumIdDoc(numdoc);
                                
                 //Page pageClientes=cliService.buscarCliente(cli, pagina,Page.SIZE_PAGE);
                 List<ClienteTO> listClientes=cliService.buscarCliente(cli);
                 //sesion.setAttribute("listClientes", pageClientes);
                 req.setAttribute("listClientes", listClientes);
                 sesion.setAttribute("cli", cli);
              }else{
                ClienteTO cli=(ClienteTO)sesion.getAttribute("cli");
                //Page pageClientes=climgr.filtraCliente(cli,pagina,Page.SIZE_PAGE);
                Page pageClientes=cliService.buscarCliente(cli, pagina,Page.SIZE_PAGE);
                sesion.setAttribute("listClientes", pageClientes);
              }
              
        return mapping.findForward(Constants.SUCCESS.getValue());
        
    }
    public ActionForward buscarClienteXLS(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse response) throws Exception {
        logger.debug("buscarClienteXLS");
        
        HttpSession sesion = req.getSession();
          
        Page result=(Page) req.getSession().getAttribute("listClientes");
        result.setPageSize(result.getTotalElements());
        sesion.setAttribute("listClientes",result);
              
        return mapping.findForward("xls");
        
    }
   
    public ActionForward insertarCliente(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse response) throws Exception {
        logger.debug("insertarCliente");
        String forward="edit";
        ActionMessages errors = new ActionMessages(); 
        
         String codcli = req.getParameter("codclie");
         String apepat = req.getParameter("txtapepat");
         String apemat=req.getParameter("txtapemat");
         String nombres=req.getParameter("txtnombres");
         String tipodoc=req.getParameter("txttipodoc");
         String numdoc=req.getParameter("txtnumdoc");
         String sexo=req.getParameter("txtsexo");
         String estcivil=req.getParameter("txtestcivil");
         String email=req.getParameter("txtemail");
         String ocupacion=req.getParameter("txtocupacion");
         String fecnac=req.getParameter("txtfecnac");
         String estatura=req.getParameter("txtestatura");
         String peso=req.getParameter("txtpeso");
         String color=req.getParameter("txtcolor");
         String direccion=req.getParameter("txtdireccion");
         String fecsus=req.getParameter("txtfecsus");
         String motsus=req.getParameter("txtmotsus");
         String observ=req.getParameter("txtobservaciones");
         String nacionalidad=req.getParameter("txtnacionalidad");
         String departamentoid=req.getParameter("cmb_dpto");
         String provinciaid=req.getParameter("cmb_prov");
         String ubigeoid=req.getParameter("cmb_dist");
         
         HashMap result;
        try{
            HttpSession sesion = req.getSession();
               ClienteTO cli=new ClienteTO();
               UbigeoTO ubig=new UbigeoTO();
               TipoDocumentoTO tdoc=new TipoDocumentoTO();
               System.out.println(codcli);
               cli.setCodCliente(0L);
               cli.setApellidoPat(apepat);
               cli.setApellidoMat(apemat);
               cli.setNombres(nombres);
               cli.setNumIdDoc(numdoc);
               tdoc.setTipoIdDoc(Long.parseLong(tipodoc));
               cli.setTipoIdDoc(tdoc);
               cli.setSexo(sexo);
               cli.setEstadoCivil(estcivil);
               cli.setEmail(email);
               cli.setOcupacion(ocupacion);
               cli.setSfecha_nac(fecnac);
               cli.setEstatura(Double.parseDouble(estatura));
               
               cli.setPeso(Double.parseDouble(peso));
               cli.setColorOjos(color);
               cli.setDireccion(direccion);
               cli.setSfecha_suspen(fecsus);
               cli.setMotivoSuspen(motsus);
               cli.setObservaciones(observ);
               cli.setNacionalidad(nacionalidad);
               ubig.setUbigeoid(Long.parseLong(ubigeoid));
               ubig.setDistid(Long.parseLong(ubigeoid));
               ubig.setProvid(Long.parseLong(provinciaid));
               ubig.setDptoid(Long.parseLong(departamentoid));
               cli.setUbigeo(ubig);
                               
                 cli.setUsuarioCrea("GAMARO");
                 
                 result=cliService.insertCliente(cli);
                 String msg="";
                 if(((String)result.get("pResult")).equals("OK")){
                   msg="Registro Grabado..";
                   List<ClienteTO> listadocli;
                   ClienteTO cli2=new ClienteTO();
                   cli2.setCodCliente(Long.parseLong((String) result.get("pCodClie")));
                   listadocli = (cliService.buscarCliente(cli2, 1, 1)).getResults();
                   cli2=(ClienteTO) listadocli.get(0);
                   sesion.setAttribute("Cliente",cli2);
                   sesion.setAttribute("msg",msg);   
                   sesion.setAttribute("result",result.get("pResult"));   
                   
                   //getServletContext().getRequestDispatcher("/licencias/ClienteForm.jsp").forward(req, response); 
                 }else{
                   msg="ERR:"+(String) result.get("pResult");
                   sesion.setAttribute("msg",msg);   
                   sesion.setAttribute("result",result.get("pResult"));   
                   forward="new";
                   //getServletContext().getRequestDispatcher("/licencias/NClienteForm.jsp").forward(req, response); 
                 }
                 
               
               
                                                 
        }
        catch (Exception e) {
           logger.error(e);
           errors.add("login", new ActionMessage("errors.interno","insertarCliente"));  
	}
              
        return mapping.findForward(forward);
        
    }
    
    public ActionForward modificarCliente(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse response) throws Exception {
        logger.debug("modificarCliente");
        String forward="edit";
        ActionMessages errors = new ActionMessages(); 
        
         String codcli = req.getParameter("codclie");
         String apepat = req.getParameter("txtapepat");
         String apemat=req.getParameter("txtapemat");
         String nombres=req.getParameter("txtnombres");
         String tipodoc=req.getParameter("txttipodoc");
         String numdoc=req.getParameter("txtnumdoc");
         String sexo=req.getParameter("txtsexo");
         String estcivil=req.getParameter("txtestcivil");
         String email=req.getParameter("txtemail");
         String ocupacion=req.getParameter("txtocupacion");
         String fecnac=req.getParameter("txtfecnac");
         String estatura=req.getParameter("txtestatura");
         String peso=req.getParameter("txtpeso");
         String color=req.getParameter("txtcolor");
         String direccion=req.getParameter("txtdireccion");
         String fecsus=req.getParameter("txtfecsus");
         String motsus=req.getParameter("txtmotsus");
         String observ=req.getParameter("txtobservaciones");
         String nacionalidad=req.getParameter("txtnacionalidad");
         String departamentoid=req.getParameter("cmb_dpto");
         String provinciaid=req.getParameter("cmb_prov");
         String ubigeoid=req.getParameter("cmb_dist");
         
         HashMap result;
        try{
            HttpSession sesion = req.getSession();
               ClienteTO cli=new ClienteTO();
               UbigeoTO ubig=new UbigeoTO();
               TipoDocumentoTO tdoc=new TipoDocumentoTO();
               System.out.println(codcli);
               cli.setCodCliente(Long.parseLong(codcli));
               cli.setApellidoPat(apepat);
               cli.setApellidoMat(apemat);
               cli.setNombres(nombres);
               cli.setNumIdDoc(numdoc);
               tdoc.setTipoIdDoc(Long.parseLong(tipodoc));
               cli.setTipoIdDoc(tdoc);
               cli.setSexo(sexo);
               cli.setEstadoCivil(estcivil);
               cli.setEmail(email);
               cli.setOcupacion(ocupacion);
               cli.setSfecha_nac(fecnac);
               cli.setEstatura(Double.parseDouble(estatura));
               
               cli.setPeso(Double.parseDouble(peso));
               cli.setColorOjos(color);
               cli.setDireccion(direccion);
               cli.setSfecha_suspen(fecsus);
               cli.setMotivoSuspen(motsus);
               cli.setObservaciones(observ);
               cli.setNacionalidad(nacionalidad);
               ubig.setUbigeoid(Long.parseLong(ubigeoid));
               ubig.setDistid(Long.parseLong(ubigeoid));
               ubig.setProvid(Long.parseLong(provinciaid));
               ubig.setDptoid(Long.parseLong(departamentoid));
               cli.setUbigeo(ubig);
                               
                 cli.setUsuarioMod("GAMARO");
                 
                 result=cliService.updateCliente(cli);
                 String msg="";
                if(((String)result.get("pResult")).equals("OK")){
                   msg="Registro Grabado..";
                   List<ClienteTO> listadocli;
                   ClienteTO cli2=new ClienteTO();
                   cli2.setCodCliente(Long.parseLong(codcli));
                   listadocli = (cliService.buscarCliente(cli2, 1, 1)).getResults();
                   cli2=(ClienteTO) listadocli.get(0);
                   sesion.setAttribute("Cliente",cli2);
                   sesion.setAttribute("msg",msg);   
                   sesion.setAttribute("result",result.get("pResult"));   
                   
                   //getServletContext().getRequestDispatcher("/licencias/ClienteForm.jsp").forward(req, response); 
                 }else{
                   msg="ERR: "+result;
                   sesion.setAttribute("msg",msg);   
                   sesion.setAttribute("result",result.get("pResult"));   
                   //getServletContext().getRequestDispatcher("/licencias/NClienteForm.jsp").forward(req, response); 
                 }
                 
               
               
                                                 
        }
        catch (Exception e) {
           logger.error(e);
           errors.add("login", new ActionMessage("errors.interno","modificarCliente"));  
	}
              
        return mapping.findForward(forward);
        
    }
    
     public ActionForward verCliente(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse response) throws Exception {
       
        String forward="ver";
        ActionMessages errors = new ActionMessages(); 
        String codcli = req.getParameter("cliente");
        logger.debug("verCliente "+codcli);
        try{
            HttpSession sesion = req.getSession();
               ClienteTO cli=new ClienteTO();
               UbigeoTO ubig=new UbigeoTO();
               System.out.println(codcli);
               cli.setCodCliente(Long.parseLong(codcli));
               cli.setUbigeo(ubig);
               List<ClienteTO> listadocli;
               listadocli = (cliService.buscarCliente(cli, 1, 1)).getResults();
               cli=(ClienteTO)listadocli.get(0);
               sesion.setAttribute("Cliente",cli);
               // Cliente Operador
                
               ClienteoperadorTO cliope=new ClienteoperadorTO();
               OperadorAereoTO ope=new OperadorAereoTO(0L); 
               cliope.setCod_cliente(cli.getCodCliente());
               cliope.setOperadorAereo(ope);
               List<ClienteoperadorTO> listadocliope=cliopeService.buscarClienteOperador(cliope);
               sesion.setAttribute("listclienteoperador",listadocliope);
               // Listado de Funcion - Operador
               FuncionTO func=new FuncionTO(0L);
               List<FuncionTO> listFuncion=cliopeService.buscarFuncion(func);
               sesion.setAttribute("listFuncion",listFuncion);
               // Listado de Operadores Aereos
               List<OperadorAereoTO> listOperador=cliopeService.buscarOperador(ope);
               sesion.setAttribute("listOperador",listOperador);
        }
        catch (Exception e) {
           logger.error(e);
           errors.add("login", new ActionMessage("errors.interno","verCliente"));  
	}
              
        return mapping.findForward(forward);
        
    }
   
}
